代码写成这样,老夫无可奈何!
以下文章来源于Java技术栈 ,作者栈长
耍猴的最佳手段
<a href="javasript:alert('抢购结束!')">立即抢购</a>
猪一样的队友
<!-- 原价 180 元,现在活动价 228 元,活动结束后恢复原价 -->
...
最牛逼的排序算法
这段代码的完整版解释请看这篇文章:刚写完排序算法,就被开除了…
排序排成这样,不开除你,开除谁?
休眠的最高境界
/**
* 获取未来几天的日期
* @param days 指定的天数
* @author 微信公众号:Java技术栈
* @return
*/
public static Date getNextDays(int days){
try {
// 休眠指定的天数
Thread.sleep(days * 24 * 60 * 60 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 休眠结束后返回日期
return new Date();
}
真就是假,假就是真
boolean isBoy = user.isBoy() == true ? true: false;
if (isBoy){
...
} else {
...
}
布尔值可以直接拿来用,你硬要写个三元表达式?年底绩效考核了,代码量有 KPI 么?
还有类似这样的:
if (xx1 == true && xx2 != true){
...
} else {
...
}
if (xx1 > xx2){
return true;
} else {
return false;
}
写得太优雅了!
循环循环循环
for (int i = 0; i < 1; i++){
...
}
一个循环也用循环,曾经就遇到过这么一段,不知所云了,要改这段代码,还要把他叫在旁边坐着,看着改才行。。
for (;;){
...
}
死循环这么写,我们就看不出来了么?
魔法值的真谛
曾经检查代码时,发现代码中很多魔法值,叫同事要定义成公共常量,结果来了这么一段:
private final static int ZERO = 0;
private final static int ONE = 1;
private final static int TWO = 2;
...
看到上面的常量定义,我真想打人,虽然魔法值是没了,但又定义了一些没有意义的常量,完全没有理解修改魔法值的真谛,这和脱裤子放屁有什么区别?
上面还只是一个简单的示例,实际审查情况远比你想象的糟糕。
看花眼的参数
Order order = new Order(orderNo, 1678.13, "CNY", 1, 3, "wx", 5, "1", 0, "8", 0, 1, new Date());
看到这样的代码,我也是醉醉的了。
我就见过同事写出这样的代码,是赶时间呢,还是真的不会设计模式,一个构造函数参数能写这么多,且不说魔法值,这么长,看一眼都觉得头大。
消失的异常
try {
...
} catch (Exception e) {}
程序捕捉了异常,却不打印。
try {
...
} catch (Exception e) {
e.printStackTrace();
}
错误是输出来了,但没有输出到日志文件。
try {
...
} catch (Exception e) {
logger.info("...", e);
}
日志级别用的不对,去错误日志文件里面死活找不着错误日志。
上面的种种不规范的写法,在生产环境出现问题时,一方面导致排查问题艰难,另一方面,监控系统也不能及时地监控到异常。
神奇的if
最后一个了,压轴了。。
来,我们一起赏析下这段神奇的 if 代码:
if(user.getFirstName() != null)
if(user.getMiddleName() != null)
if(user.getLastName() != null)
if(user.getNickName() != null)
if(user.getShortName() != null)
if(user.getFullName() != null)
if(user.getFamilyName() != null)
if(user.getEnglishName() != null)
...
return true;
return false;
这段代码够奇葩了吧,一个 if 能搞定的非要写这么长,还缩进得这么有层次感。。
小结
写神逻辑代码的人才这么多,找问题、解决问题真是太难了。
福利彩蛋
参与方式:主要在本文留言参与话题“你见过最烂的代码写成什么样”即可有机会获得专属定制马克杯一个,有3个名额哦~
抽奖时间:10月29日18:00